1. Field of Invention
The invention relates to methods for managing data, more specifically to increasing the capabilities of error correction codes and to operating memory systems by utilizing indication about the quality of the data.
2. Discussion of Related Art
The continued increases in data storage densities are achieved, among others, by decreasing the sizes of individual memory cells, decreasing the inter-cell separation, and using several signal levels to store more data per cell. Decreasing sizes make the cells more susceptible to external perturbations, decreasing the inter-cell separation can introduce unwanted interference between cells, and multi-level data storage makes it more likely that deviations from the preferred ranges result in misreading of the data. All these negative side effects of increasing storage densities make it more likely that the data will be corrupted.
Traditional ways to reconstruct corrupted data include the application of Error Correction Codes (ECCs). Simple Error Correction Codes store additional parity bits, which capture the parity of the sum of a word""s bits, when the data is written into the memory system. If during storage the data is corrupted, the parity of the sum of bits may change. Upon reading the data from the memory system, the parity of the sum of the word""s bits is computed once again by the ECC. Because of the data corruption the computed parity may not match the content of the parity bits, and the ECC may detect the corruption.
There are more sophisticated error correction codes in use today. But the basic concept remains: ECCs compute some summary information of the data upon writing the data into the memory system. This summary information is then stored in additional bits. During the readout the summary information is computed once again by the ECC, and the result is compared with the result, stored in the additional bits. If the two do not agree, the data has been corrupted during storage or the operation of the memory system.
ECCs can have at least two functions: error detection and error correction. The latter function is typically harder. An early example is the (7,4) Hamming code, which has the capability of detecting 2 errors per word, but it can correct the words only if they contain a single error.
More sophisticated ECCs today can correct more than a single error per word. But beyond 2 or 3 random errors per word even for sophisticated ECCs it becomes computationally increasingly complex to reconstruct the data. Common practice is to recover the data with some acceptably small probability of incorrect recovery. However with increasing number of errors the probability of reliable data recovery also decreases rapidly, or the associated costs in additional hardware and/or performance become prohibitively high.
Therefore auxiliary methods which increase the capability of the Error Correction Codes in today""s memory systems are desired.
Some auxiliary methods have been described in detail in U.S. Pat. Nos. 5,657,332 and 6,049,899, both granted to D. Auclair et al., which are hereby incorporated by reference in their entirety. These patents developed the concept of soft error handling.
In semiconductor memory devices, including EEPROM systems, data can be represented by the voltages of particular gates. Typically, different digital data storage values are represented by well-separated voltage levels. If, for some reason, during the read operation the voltage levels shift from their preferred ranges by an amount comparable to the level separation, errors may be detected by the ECC.
Many errors develop gradually. Memory cell voltages can drift away from the preferred ranges for a number of reasons. These include external perturbations, for example, variations in the operating conditions, as well as internal influences, such as interference during writing into neighboring memory cells. The above inventions describe methods for regular monitoring of the data of the memory cell array even before the voltage shifts result in an actual ECC-detected error. After the monitoring operations found voltages having started shifting from the preferred voltage ranges, different corrective actions can be executed. A possible corrective action is xe2x80x9cscrubbingxe2x80x9d the array. Scrubbing can include rewriting the complete sector of the erroneous memory cell into a different sector of the array.
Recently the density of data storage has been further increased by implementing multi-level storage schemes, in which single memory cells store not only binary xe2x80x9c0xe2x80x9ds and xe2x80x9c1xe2x80x9ds, but several more levels. The number of the levels is often chosen to be 4, 8, or 16. Such multi-level memory systems have been described in U.S. Pat. No. 6,222,762 B1, granted to D. Guterman et al, and U.S. Pat. No. 6,275,419 B1, granted to D. Guterman et al., which are hereby incorporated by reference in their entirety. In such multi-level systems 4, 8, or 16 voltage levels can be distinguished within the same overall voltage range. Correspondingly the separation of voltage levels decreases and increasingly smaller voltage shifts can lead to errors.
Therefore auxiliary methods which increase the capability of the Error Correction Codes to detect and reconstruct corrupted data in high-density arrays of multi-level memory cells are desired.
Briefly and generally, the quality of data, stored in a memory system, is assessed by different procedures, and the memory system is operated according to the assessed quality. The data quality can be assessed during read operations. Subsequent application of an Error Correction Code (ECC) can utilize the quality indications to detect and correct the data with improved effectiveness. Alternatively, a statistics of data quality can be constructed and the digital representation of the data modified to diminish data corruption. In both cases the corrective actions can be implemented specifically on the poor quality data, and, aided by the quality indications, with improved effectiveness. These methods can be especially useful in high-density memory systems, constructed of multi-level cells.
According to one aspect of the invention, data quality assessment can take place during reading the data storage values from the memory cells of an array, such as an array of EEPROM cells. The reading can take place with precision higher than required by the end user of the data. For example, data storage values intended to store data in four bits, can be read with seven-bit precision. The higher precision readout of the data storage values can then be converted to lower precision digital data values, required by the user, plus an associated indication of the quality of the data. If the Error Correction Code detects a corrupted digital data value, it will be able to reconstruct the corrupted digital data value data more effectively utilizing the associated quality indications.
For example, if the ECC finds a corrupted digital data value and the associated quality indications indicate that the corresponding data storage value is above a preferred range, then most likely the data storage value drifted down from the adjacent preferred range of the one higher digital data value. Embodiments of the invention relay this quality indication to the ECC, which can then correct the corrupted digital data value, directing it to the one higher digital data value in this example.
According to another aspect of the invention, statistics of the data quality assessments can be formed even without the ECC indicating an error. A distribution of how many data storage levels drifted by what amount within the sectors can be constructed. In sectors, where the distribution shows systematic shifts, the assignment of digital data values to data storage values can be shifted by a corresponding amount to compensate for the systematic shift. In sectors, where the distributions got broader, corrective actions can be scheduled or performed in response, according to the severity of the broadening. These corrective actions may include rewriting the erroneous data or the entire corresponding sector, with high or low priority.
According to another aspect of the invention, the errors detected by the ECC can be counted within the sectors. Depending on the number of errors per sector, different types of corrective actions can be implemented, with high or low priority.